package com.xzmzhp.service.people.impl;

import com.github.pagehelper.PageInfo;
import com.xzmzhp.constant.ReturnConstant;
import com.xzmzhp.dao.people.SocietyMapper;
import com.xzmzhp.pojo.people.Society;
import com.xzmzhp.service.people.SocietyService;
import com.xzmzhp.utils.return_tool.ReturnData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 王源
 * @Date: 2020/11/15 23:32
 * @Description: society逻辑接口实现类
 */
@Service
public class SocietyServiceImpl implements SocietyService {

    @Autowired
    private SocietyMapper societyMapper;

    /**
     * 查询所有
     *
     * @return ReturnData对象 成功返回 data 失败返回错误信息和错误状态码
     */
    @Override
    public ReturnData findAll() {
        List<Society> list = societyMapper.findAll();
        if (list != null) {
            PageInfo<Society> pageInfo = new PageInfo<>(list);
            return ReturnData.ok(list, pageInfo.getTotal());
        } else {
            return ReturnData.error(ReturnConstant.FAIL, "没有找到社团信息");
        }
    }

    /**
     * 根据社团名称查询数据
     *
     * @param societyName 社团名称
     * @return ReturnData对象 成功返回 data 失败返回错误信息和错误状态码
     */
    @Override
    public ReturnData findBySocietyName(String societyName) {
        List<Society> list = societyMapper.findBySocietyName(societyName);
        if (list != null) {
            PageInfo<Society> pageInfo = new PageInfo<>(list);
            return ReturnData.ok(list, pageInfo.getTotal());
        } else {
            return ReturnData.error(ReturnConstant.FAIL, "没有找到社团信息");
        }
    }

    /**
     * 根据学校名称模糊查询社团信息
     *
     * @param societySchool 学校名称
     * @return ReturnData对象
     */
    @Override
    public ReturnData findBySocialSchool(String societySchool) {
        List<Society> list = societyMapper.findBySocialSchool(societySchool);
        if (list != null) {
            PageInfo<Society> pageInfo = new PageInfo<>(list);
            return ReturnData.ok(list, pageInfo.getTotal());
        } else {
            return ReturnData.error(ReturnConstant.FAIL, "没有找到社团信息");
        }
    }

    /**
     * 根据学校名称和社团名称模糊查询
     *
     * @param societyName  社团名称
     * @param societySchool 学校名称
     * @return list对象
     */
    @Override
    public ReturnData findBySocial(String societyName, String societySchool) {
        List<Society> list = societyMapper.findBySocial(societyName, societySchool);
        if (list != null) {
            PageInfo<Society> pageInfo = new PageInfo<>(list);
            return ReturnData.ok(list, pageInfo.getTotal());
        } else {
            return ReturnData.error(ReturnConstant.FAIL, "没有找到社团信息");
        }
    }

    /**
     * 根据社团id查询信息
     *
     * @param societyId 社团id
     * @return ReturnData对象 成功返回 data 失败返回错误信息和错误状态码
     */
    @Override
    public ReturnData findBySocialId(Integer societyId) {
        Society society = societyMapper.findBySocialId(societyId);
        if (society != null) {
            return ReturnData.ok(society);
        } else {
            return ReturnData.error(ReturnConstant.FAIL, "没有找到id为" + societyId + "的社团信息");
        }
    }

    /**
     * 社团信息添加方法
     *
     * @param society 社团对象
     * @return ReturnData对象 成功返回 data 失败返回错误信息和错误状态码
     */
    @Override
    public ReturnData addSociety(Society society) {
        if (society != null) {
            Integer i = societyMapper.addSociety(society);
            if (i > 0) {
                return ReturnData.ok();
            } else {
                return ReturnData.error(ReturnConstant.FAIL, society.getSocietyName() + "添加失败");
            }
        } else {
            return ReturnData.error(ReturnConstant.FAIL, "没有获取到社团信息");
        }
    }

    /**
     * 修改社团信息
     *
     * @param society 社团实体类
     * @return ReturnData对象 成功返回 data 失败返回错误信息和错误状态码
     */
    @Override
    public ReturnData updateSociety(Society society) {
        if (society != null) {
            Integer i = societyMapper.updateSociety(society);
            if (i > 0) {
                return ReturnData.ok();
            } else {
                return ReturnData.error(ReturnConstant.FAIL, society.getSocietyName() + "添加失败");
            }
        } else {
            return ReturnData.error(ReturnConstant.FAIL, "没有获取到社团信息");
        }
    }

    /**
     * 删除社团信息
     *
     * @param societyId 社团id
     * @return ReturnData对象 成功返回 data 失败返回错误信息和错误状态码
     */
    @Override
    public ReturnData deleteSociety(Integer societyId) {
        Integer i = societyMapper.deleteSociety(societyId);
        if (i > 0) {
            return ReturnData.ok();
        } else {
            return ReturnData.error(ReturnConstant.FAIL, "没有找到id为" + societyId + "的社团信息");
        }
    }
}
